home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 1
/
Cream of the Crop 1.iso
/
PROGRAM
/
TP042692.ARJ
/
04-26-92.TPC
Wrap
Text File
|
1992-04-26
|
79KB
|
2,350 lines
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 01-01-00 00:00:00
From
To
Subject
--- WM v2.01/92-0100
* Origin: A.C.E. of Spades (615)383-4381 The B.A.N. board (1:116/33)
* Tossed by SFToss v1.00b on 92/04/09 12:01:00
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-18-92 03:07:05
From Trevor Carlsen
To David Webb
Subject Word Wrap/Editor
DW> I was wondering if I could get some help at all on word
DW> wrapping. I need to write an editor into a programme of
DW> mine. So far, I have succeeded in writing a word wrap
DW> routine using an array but when I try to write this array to
DW> a text file, the textfile is just left blank. Would someone
DW> possibly be able to give me a full source listing of an
DW> editor at all (preferably with cursor keys written into it -
DW> not essential) with filesave built in please ?
OPro has an editor object. This is a commercial product which will cost you
about A$215 to land including all charges if you personally import it. (Don't
pay the rip-off local price.) The price is cheap considering what you get
- 3 manuals, 9 disks, 11mb - all including full source.
Another excellent source is the now defunct Borland product Editor toolbox.
This has not been updated since TP4 but is still advertised by some software
places. As it is so out-of-date you should be able to negotiate a decent
price. It would probably only need minor rewriting for TP6.
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732569) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/19 17:24:04
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-18-92 01:45:46
From Trevor Carlsen
To Håkan Johansson
Subject Mouse Stuff
> Mouse unit, copyright 1992 HSE Delft, all rights reserved.
> Released as public domain
LM> The two lines above contradict each other. Which is it,
LM> copyrighted or public domain?
HJ> I don't believe it is a contradiction, but of course, I may
HJ> wrong. Copyright, in this case, means you don't have the
HJ> right to sell the unit source code without the permission of
HJ> the author, but, by the "public domain" statement, have the
HJ> right to compile it into your own programs. Anyway, that's
HJ> my personal interpretation. Am I in the wrong?
Yes, you are. To avoid the extended threads that always seem to follow debates
on copyright here is the situation.
Placing a work in the Public Domain means that a programmer relinquishes ALL
rights to that work. Anybody can do *anything* s/he wishes with it, including
sell, alter, mangle, publish etc etc. as the original owner no longer has
*any* rights to the work.
Therefore your original message was contradictory. "Copyright" and "Public
Domain" are exact opposites. They are mutually exclusive.
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732569) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/19 17:24:05
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-18-92 03:11:21
From Trevor Carlsen
To Herb Brown
Subject Sector sizes
HB> ... is the fact DOS calculates free space on sector size,
HB> i.e., if a file were 9186 bytes, DOS would free 10240 bytes
HB> with a drive that used 512 bytes in sector size. How does
HB> one get the sector size of any given drive so as to get the
HB> totals for the dry run and the actual run to match?
A cluster is the unit used by dos as the minimum allocation, not a sector.
Usually, but not always, 4 sectors make up one cluster on hard drives. Floppies
and RAM drives are different.
function GetClusterSize(drive: byte {0=default, 1=A... etc}): word;
var
regs : registers; { from the dos unit }
begin
with regs do begin
ah := $1c;
dl := drive;
intr($21,regs);
GetClusterSize := al {SectorsPerCluster} * cx {BytesPerSector};
end; { with }
end; { GetClusterSize }
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/19 17:24:05
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-18-92 08:43:19
From Trevor Carlsen
To Jud Mccranie
Subject Re: More features needed in TP
DM> One might say that having 64K of global data is bad style in
DM> itself. What sort of data is it?
JM> Any sort of data that several parts of the program need. It
JM> is much better to have all of the data you need right there
JM> in memory rather than having to read it from disk each time
JM> you need it.
But why waste global data segment space? It makes far more sense to use the heap.
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/19 17:24:05
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-18-92 10:31:43
From Trevor Carlsen
To Jud Mccranie
Subject Your origin line
JM> * Origin: Business Connection 750+M (912)247-6977 (69:2210/1)
^^^^^^^^^^
I'm not sure if this is new or not but it is the first time I've noticed it!
Please fix to ensure it complies with FidoNet specifications.
As it stands, a reader has no way of knowing where to send you netmail if
s/he does not have access to the PATH line.
Trevor Carlsen
Moderator.
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/19 17:24:05
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-18-92 08:39:02
From Dj Murdoch
To Jud Mccranie
Subject Re: More features needed in TP
DM> One might say that having 64K of global data is bad style in
DM> itself. What sort of data is it?
JM> Any sort of data that several parts of the program need. It is much
JM> better to have all of the data you need right there in memory rather
JM> than having to read it from disk each time you need it.
Then why not put it in the heap?
--- Msg V3.2
* Origin: Murdoch's Point: Waterloo, Ontario, Canada (1:221/177.40)
* Tossed by SFToss v1.00b on 92/04/19 17:24:16
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-18-92 08:39:45
From Dj Murdoch
To Jud Mccranie
Subject Re: Powers
JM> Of course, the overloading wouldn't be necessary if the common
JM> operations like that were included. And as far as I'm concerned, it
JM> would be acceptable if other symbols were used, say "#" for matrix mult.
JM> But there aren't enough of those other symbols, unless you go to the
JM> non-keyboard ASCII characters.
I like it to be kept simple. Remember, TP is readable. Start writing things like
x%z$w#y
and you won't know what's going on.
--- Msg V3.2
* Origin: Murdoch's Point: Waterloo, Ontario, Canada (1:221/177.40)
* Tossed by SFToss v1.00b on 92/04/19 17:24:16
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-18-92 08:47:47
From Dj Murdoch
To Herb Brown
Subject Re: Sector sizes
HB> However, the clash is the fact DOS calculates free
HB> space on sector size, i.e., if a file were 9186 bytes, DOS
HB> would free 10240 bytes with a drive that used 512 bytes in
HB> sector size. How does one get the sector size of any given
HB> drive so as to get the totals for the dry run and the actual run to match?
Not sector size, cluster size. You can get the cluster size in a couple of
ways. Either read the boot sector directly, or use the MSDOS service 1C:
INT 21 - DOS 1+ - GET ALLOCATION INFORMATION FOR SPECIFIC DRIVE
AH = 1Ch
DL = drive (00h = default, 01h = A:, etc)
Return: AL = sectors per cluster (allocation unit)
CX = bytes per sector
DX = total number of clusters
DS:BX -> media ID byte (see AH=1Bh)
Note: under DOS 1.x, DS:BX points at an actual copy of the FAT; later
versions return a pointer to a copy of the FAT's ID byte
This is from Ralf Brown's interrupt list.
--- Msg V3.2
* Origin: Murdoch's Point: Waterloo, Ontario, Canada (1:221/177.40)
* Tossed by SFToss v1.00b on 92/04/19 17:24:17
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-18-92 08:56:35
From Dj Murdoch
To Trevor Carlsen
Subject Re: Encryption
TC> What you say is true if the key is non-random. However
TC> any file produced randomly and used only once as a key
TC> makes the method 100% secure.
...unless you use a pseudo-random number generator, and someone figures out
which one :-).
--- Msg V3.2
* Origin: Murdoch's Point: Waterloo, Ontario, Canada (1:221/177.40)
* Tossed by SFToss v1.00b on 92/04/19 17:24:17
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-18-92 09:00:02
From Dj Murdoch
To John Gohde
Subject Re: C++ Products
JG> As TP has stopped being simple a long while ago, I hope that
JG> Borland bothers to add a few needed so-called professional
JG> features to it. Otherwise, TP may very well become obsolete. The
JG> more serious users will migrate to other companies like Stoney
JG> Point. New users wont start cause it costs more than C. And, the
JG> simple types will stick to BASIC, as the new versions are quite
JG> well suited to those who just want to muck around in something
JG> simple.
Which sort of features did you have in mind? The major difference between
TP and SBP+ is that the latter makes significant attempts at optimization;
that would be nice, but would fall behind two other features in importance
for me:
- huge structures (i.e. >64K)
- dynamic array indexing (i.e. array bounds determined at run-time, so I
don't have to use ugly syntax to work with matrices whose size isn't known
in advance.
--- Msg V3.2
* Origin: Murdoch's Point: Waterloo, Ontario, Canada (1:221/177.40)
* Tossed by SFToss v1.00b on 92/04/19 17:24:17
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-19-92 18:36:00
From Werner Berghofer
To John Gohde
Subject SAA/CUA standards
* Forwarded from conference "PASCAL"
* Originally by Werner Berghofer
* Originally to Frank Rachel
* Originally dated Sunday, 5. April 1992, 19:16
Frank,
> Is there some kind of specification on this SAA/CUA thing?
yes, of course: IBM published a set of books called "Systems Application
Architecture Library". The most important are listed here.
Title IBM part#
---------------------------------------------------------------------
An Overview GC26-4341
Common Communications Support: Summary GC31-6810
Common User Access: Advanced Interface Design Guide SC26-4582
Common User Access: Basic Interface Design Guide SC26-4583
SAA, A Guide for Evaluating Applications G320-9803
SAA, Common Programming Interface: Dialog Reference SC26-4356
SAA, Common Programming Interface: Presentation Reference SC26-4359
Writing Applications: A Design Guide SC26-4362
---------------------------------------------------------------------
All of them are written in typical IBM English, so be prepared for
a linguistic close encounter of the blue kind besides the cultural shock ;-)
Werner
---
* Origin: REALITY.SYS corrupted -- reboot Universe [Y,n]? (2:310/90.100)
* Tossed by SFToss v1.00b on 92/04/20 08:16:03
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-19-92 13:00:04
From Terry Hughes
To Eddy Hartono
Subject ExecSwap
EH>Hello Terry!
EH>Can you tell me , where can I find a ExecSwap funtion, that
EH>also can load a TSR
EH>without any problem...,just as NC do, or PCShell ?
EH>I need it badly.... ha ha ha
It's possible to load a permanent TSR from an EXEC but it's
not usually practical (you end with a hole in memory if
it works at all).
I'm not familiar with NC or PCShell so I don't know if that's
what they're really doing.
In any case, you can find EXECSWAP on our BBS -- 719-260-9726.
-Terry
* OLX 2.2 * TurboPower Software (voice 719-260-6641)
--- Maximus 2.01wb
* Origin: The Programmers Playhouse (1:128/60)
* Tossed by SFToss v1.00b on 92/04/20 08:16:11
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-19-92 12:16:06
From Terry Hughes
To Jud Mccranie
Subject time
JM>I have some suggestions for time variables in TPro and OPro. There is a
JM>need for more variability in time data types. For instance, the current
JM>"time" is a time of day (< 24 hours). There also needs to be a
JM>elapsed time (or something), that can go past 24 hours, say to store
JM>the time worked this week (or month).
Sounds like what you really want is a timing facility. We provide
such a unit in Async Professional.
-Terry
* OLX 2.2 * TurboPower Software (voice 719-260-6641)
--- Maximus 2.01wb
* Origin: The Programmers Playhouse (1:128/60)
* Tossed by SFToss v1.00b on 92/04/20 08:16:11
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-19-92 13:24:08
From Terry Hughes
To John Gohde
Subject Re: C++ Products
JG>Well, to me Turbo Pascal has stopped being simple since version
JG>5.0. Certainly with the addition of OOPs and TV; TP can be very
JG>complicated. But, just because these features are there don't
JG>mean that you have to use them.
I guess "simple" is relative. In the circles that I travel TP, C
and C++ dominate. Of those, Turbo Pascal provides the cleanest
and simplest language environment (not to mention the fastest at
compiling and linking). Even the very powerful addition of OOP
required only four new keywords.
TV isn't part of the TP language specification -- it's an add-on
library (framework to be precise).
JG>It seems to me that adding to the number of optional compiler
JG>directives would not in any way bog down either TP nor a TP
JG>programmer.
I don't recall saying otherwise. My complaint about C++ is
that I believe it is too slow and offers a higher level of
complexity and difficulty than is required for most
applications. My advice to people that want to bring these
"features" over to TP is to themselves switch to C or C++.
That doesn't mean I think Borland should let TP stagnate nor do
I believe they are doing so. I just hope that new features are
added thoughtfully and carefully and the essence of Turbo Pascal
(simplicity and developement speed) is left intact.
JG>As TP has stopped being simple a long while ago, I hope that
JG>Borland bothers to add a few needed so-called professional
JG>features to it. Otherwise, TP may very well become obsolete. The
JG>more serious users will migrate to other companies like Stoney
JG>Point. New users wont start cause it costs more than C. And, the
JG>simple types will stick to BASIC, as the new versions are quite
JG>well suited to those who just want to muck around in something
JG>simple.
Our experience in the Turbo Pascal add-on market suggests
otherwise. TP thrives in the vertical market, consulting and
even corporate markets (at least, in our slice of the TP
market). This means that existing programmers are sticking with
it and new programmers are joining the fold. And I believe what
attracts them are the clean language, simple but powerful OOP
capabilities, fast compilation and link speeds, and low library
prices.
However, I'm not so foolish as to believe that TP will ever win
over the market in general. Too many companies and programmers
blindly accept the complexity and longer development cycles of
C/C++ simply because everyone else is doing so. Our opinion,
however, is that TP will continue to thrive despite the
lemming-like rush to C++.
-Terry
* OLX 2.2 * TurboPower Software (voice 719-260-6641)
--- Maximus 2.01wb
* Origin: The Programmers Playhouse (1:128/60)
* Tossed by SFToss v1.00b on 92/04/20 08:16:11
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-19-92 13:24:10
From Terry Hughes
To Alf Katz
Subject Opro V1.12
AK>I have version 1.10 and use it A LOT. Any idea about what
AK>changes have been made since 1.10? Specifically, I have
AK>encountered a bug which hangs the system if you execute an
AK>external program with the mouse enabled. I've had to send
AK>out a couple of applications without mouse support because
AK>of this.
No major new components but a bunch of minor to moderate
enhancements: MAKESCRN/MAKEMENU now generate units and programs
instead of just programs; divider bars in picklists, spreadsheet
object, background tasks during drag move/resize, 4DOS and DOS 5
related updates, and a host of other modifications of the same
caliber.
I'm not aware of any mouse/EXECing related bugs. If you give me
some details here or call our tech support line I'm sure we can
figure out what's going wrong. The most common cause of such a
hang is leaving an ISR or mouse event handler active when
doing the EXEC. In particular, if you are using OPDRAG then you
must be sure to call DisableISRs and InitializeMouse before
doing the EXEC.
-Terry
* OLX 2.2 * TurboPower Software (voice 719-260-6641)
--- Maximus 2.01wb
* Origin: The Programmers Playhouse (1:128/60)
* Tossed by SFToss v1.00b on 92/04/20 08:16:11
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-19-92 12:01:51
From Dj Murdoch
To John Giesbrecht
Subject Re: Procedure start-up code
JG> I have a small (strictly cosmetic) suggestion: the
JG> listings would be much easier to read if the disassembled
JG> code were indented by a space or two to set it off from the source.
I think it would be hard to do that right: the source indentation usually
varies a lot, and I wouldn't want to mess around with it. I'd suggest indenting
your source; DUMPPROG will keep whatever indentation you give.
--- Msg V3.2
* Origin: Murdoch's Point: Waterloo, Ontario, Canada (1:221/177.40)
* Tossed by SFToss v1.00b on 92/04/20 09:39:55
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-19-92 12:08:42
From Dj Murdoch
To Timothy Winters
Subject Re: Turbo Pascal Units
TW> Hello out there in Pascal Land! I have asked a question
TW> to a buddy of mine and he can't answer me...Maybe one of
TW> you out there can. Is there a way to use .TPU files from
TW> older versions of TP (4.0/5.0/5.5) on TP 6.0, without
TW> having the original source code for the unit? He has Tp
TW> 5.5, and I have Tp 6.0. he has some units that he got
TW> from various boards that work on his version of TP, but
TW> there is no source for them. I would like to use these
TW> units, but I can't since I have TP 6.0. Does anyone know
TW> of a translator program out there, or is this idea an impossibility?
It's not impossible, but it's very difficult, and not certain to work. Harald
Harms has mentioned a commercial program to do the translation from Saesoft;
you might want to write to him (sorry, I forget the address) and buy a copy.
However, I should mention that Harald is apparently the only one on the echo
to have even heard of this product, and though he claims to have no interest
in it himself, has only provided his own address for contacting the company.
He has also been vary vague about exactly what are the exact capabilities
of the program.
I'd recommend that you don't spend any money on this conversion program.
If you have any non-Borland .TPU units without source, either buy the source
or throw them out. They'll only cause you grief later if you don't.
--- Msg V3.2
* Origin: Murdoch's Point: Waterloo, Ontario, Canada (1:221/177.40)
* Tossed by SFToss v1.00b on 92/04/20 09:39:55
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-19-92 12:30:03
From Dj Murdoch
To Judy Birmingham
Subject Re: SAA/CUA ???
JB> In recent months I've seen several messages mentioning
JB> SAA/CUA (or something like that), and they seemed to be
JB> referring to a type of user interface. I've posted this
JB> question several times, but apparently our mail hasn't
JB> been getting out for the past month or so, so I never got
JB> any replies. Can anybody tell me what the initials stand for?
It came out of IBM; you expect it to mean something? :-) I think they stand
for something like "Systems Application Architecture/Common User Access",
but I could easily have one or two meaningless words wrong.
--- Msg V3.2
* Origin: Murdoch's Point: Waterloo, Ontario, Canada (1:221/177.40)
* Tossed by SFToss v1.00b on 92/04/20 09:39:55
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-19-92 12:36:23
From Dj Murdoch
To Sean Ocker
Subject Re: FAT writing
SO> Okay, so how is the FAT stored? How is it accessable (just
SO> like a file -- using assign)? And, how do you change things
SO> in there without messing up everything?
You expect an answer to this in echomail? Look it up in a reference book;
most of them will get it right, whereas you'll get all sorts of misinformation
if you ask here.
For starters:
The FAT is usually concentrated in the middle of the disk, though a small
amount of FAT is to be found everywhere on the disk. Some particularly slow
moving disks have a good deal of FAT concentrated in the read/write head.
SO> Example..... Want to move (not copy) a file to another directory
SO> or drive without having to have space for two copies....I have
SO> seen programs that do this...but how is it done?
Don't do this by editing the FAT. Use Rename, or copy & delete.
SO> Also, how do you get rid of the DOS grid on a floppy disk to give
SO> the disk more space?
What is a "DOS grid"?
SO> Finally, is Pascal not the language to use for all this?
SO> Is Assembly?
Depending on what you want to do, it's almost certainly easier in Pascal.
You may have to write some low-level parts in inline assembly code; for example
there's no way to call the DOS absolute disk read/write services from pure
Pascal.
--- Msg V3.2
* Origin: Murdoch's Point: Waterloo, Ontario, Canada (1:221/177.40)
* Tossed by SFToss v1.00b on 92/04/20 09:39:55
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-20-92 09:13:18
From Trevor Carlsen
To J.P KARRELL
Subject Re: Variable # Parameters
JK> Excuse my apparent ignorance, but who can I contact to link into the
JK> PNL? Your reply appreciated,
As you are in the US, I cannot really be of much assistance but here is an
extract from the latest file. There are probably dozens more that would carry this.
Editor:
Alex Boisvert
86 Bryant St.
Sherbrooke, Quebec
Canada J1J 3E4
Distribution List
The following is the phone numbers to bulletin boards known to carry
PNL. If you would like your bulletin board's name and number added to
or deleted from this list, please send me a message at one of my many
addresses. I can not guarantee whether a listed board will have any
particular issue, however.
Thieve's World ......................... Phone: (713) 463-8053
Hippocampus ............................ Phone: (203) 484-4621
Turbo City BBS ......................... Phone: (209) 599-7435
The Final Frontier BBS.................. Phone: (518) 761-0869
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/20 19:43:23
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-21-92 03:48:11
From Trevor Carlsen
To Dj Murdoch
Subject Re: Encryption
TC> What you say is true if the key is non-random. However
TC> any file produced randomly and used only once as a key
TC> makes the method 100% secure.
DM> ...unless you use a pseudo-random number generator, and someone
DM> figures out which one :-).
Yep! As you well know, no pseudo-random sequence is in fact random. It only
appears to be that way. Actually I've just discovered a method of producing
a sequence of random numbers that I would consider to be about as close as
one can get to being truly random!
Here in Oz, Telecom had an infamous telephone that they used to install that,
if connected in parallel with a modem, introduces what appears to be totally
random line noise to a connection after its residual power is exhausted -
usually about 12 minutes. If this noise is captured to a file I think it
would be totally random. Its an interesting concept! :-)
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/21 20:21:08
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-21-92 03:14:36
From Trevor Carlsen
To Herb Brown
Subject Cluster size (was sector)
HB> The function works well. The formula I used to get the result is:
HB> Number_of_clusters := trunc(file_size/cluster_size)+1
HB> Would_be_free := Number_of_clusters * cluster_size
HB> The var would_be_free is a tally of the file(s) actual size. The only
HB> problem with this algorythm is the possibitie that the file size would
HB> be equal to the cluster size. The +1 would throw that out the window.
HB> I suppose modula arithmetic would be well suited here.(?)
No... a better algorithm is the answer. :-)
Number_of_clusters := (file_size + pred(cluster_size)) div cluster_size;
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/21 20:21:08
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-21-92 03:24:53
From Trevor Carlsen
To Dale Barnes
Subject Help Needed with TP arrays
> TP can use a pseudo dynamic array - I won't post the code again,
> as no doubt you have seen it by now, and this is undoubtedly the
DB> Would it be asking to much for you to post again, I am interested in
DB> how your doing this. I have not seen your code (this one) posted
DB> before.
It involves declaring a type which is zero bounded, turning off range checking
when using an array declared as that type, and then allocating only as much
memory as is required at start-up. If during running it is determined that
more elements are required than was originally allocated then the whole structur
can be saved, freed and reallocated.
type
dynamic_array = array[0..0] of whatever;
Ptr2DA = ^dynamic_array;
var
dynamic : Ptr2DA;
begin
Get_Number_Of_Elements_Needed;
GetMem(dynamic,NumbOfElements * sizeof(whatever));
{$R-}
dynamic[1000] := 1000;
etc...
Range checking becomes absolutely the programmer's responsibility - a la C.
An alternative method involves declaring the type with as many elements as
possible and only allocating memory for as many as required. I prefer the
above method because it does not exclude multi-dimensioned arrays as does
the other. I also prefer it because it *forces* the programmer to cancel
automatic range checking and so, hopefully :-), forces programmer range checking
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/21 20:21:08
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-21-92 09:09:38
From Trevor Carlsen
To Benjamin Schollnick
Subject Re: Exit?
BS> EXIT is a royal pain in the rear! I'm handling a rewrite of a
BS> program and the original programmer made a MESS of it by using GLOBAL
BS> VARIABLES and EXIT's to no end!!! AUGH!!
BS> Three quarters of the time I'm spending is just in erasing all the
BS> exit's and global variables...
Exits, Gotos and global variables are not necessarily bad in themselves.
The problems usually arise from the way in which they are used by some "programm
rs".
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/21 20:21:08
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-20-92 22:31:00
From Norbert Igl
To Chris Barrett
Subject MOVEing files vs. copy/delete
Hi Cris, and all...
After reading so much about this topic,
i feel free to include "my" sligtly different solution.
( HI, TeeCee, you know about "my" solutions...(:-) )
-------------------------8<---------------------------------
uses DOS;
(*$M 4000,0,0*) { leave memory for child-process, min=100k }
procedure RenameFile(OldName, NewName : String);
Type ServerReg = Record
AX,BX,CX,DX,SI,DI,DS,ES : Word;
resvd,
StationId,
ProcessId : Word;
end;
Var Regs: Registers;
SRegs: ServerReg;
procedure DoCommand(par:string);
begin
SwapVectors;
Exec(GetEnv('COMSPEC'),'/C '+ par + '>NUL');
SwapVectors
end;
function RealName(FakeName:String):String;
Var Temp:String;
begin
FakeName := FakeName + #0; { ASCIIZ }
With Regs do
begin
AH := $60;
DS := Seg(FakeName); SI := Ofs(FakeName[1]);
ES := Seg(Temp); DI := OfS(Temp[1]);
INTR($21,Regs);
DOSERROR := AX * ((Flags And FCarry) shr 7);
Temp[0] := #255;
Temp[0] := CHAR(POS(#0,Temp)-1);
end;
If DosError <> 0 then Temp := '';
RealName := Temp;
end;
begin
OldName := RealName( OldName ); { resolve subst, join, redir...}
if DosError <> 0 Then exit;
NewName := RealName( NewName );
if DosError <> 0 Then exit;
If ( OldName[1] <> NewName[1] ) { diff. drives !! }
or ( Swap(DosVersion) < $0310 ) { update your DOS-Version !!! }
or ( Swap(DosVersion) = $2903 ) { DR-DOS 3.41...Oh nooo...}
or ( Swap(DosVersion) = $3203 ) then { DR-DOS 5.0...Aiieeee..}
begin { the old fashioned way...}
DoCommand('COPY' + OldName+ ' ' + NewName );
if DosError <> 0 Then exit;
{ if DosError=8 => not enough mem, check your (*$M...settings }
DoCommand('DEL' + OldName);
end
else
begin { rename with path & wildcard }
OldName := OldName + #0; { -> ASCIIZ }
NewName := NewName + #0;
With SRegs do
begin
AX := $5600;
DS := Seg(OldName); DX := Ofs(OldName[1]);
ES := Seg(NewName); DI := Ofs(NewName[1]);
resvd := 0;
StationId := 0;
ProcessId := PrefixSeg;
Regs.AX := $5D00;
Regs.DS := Seg(SRegs);
Regs.DX := Ofs(SRegs);
Intr($21, Regs);
DosError := AX * (( Regs.Flags and FCarry) shr 7);
end;
end;
end;
(**************** Test-Area ****************************)
begin
renameFile( 'Test.pas' , 'Test1.txt');
if DosError <> 0 then
writeln(' Rename failed : Error =', DosError);
if DosError=0
then renamefile( 'test1.txt' , 'test.pas' );
end.
------------------------->8---------------------------------
Bye from Germany, Norbert
---
* Origin: [MILKYWAY]-(SOL.3)-EUROPA/@FIDO (2:241/5300.3)
* Tossed by SFToss v1.00b on 92/04/21 20:21:11
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-21-92 00:00:00
From Terry Hughes
To Richard Morris
Subject Why I Like Tp 5.5 Ide (c
RM> > SP>I think Turbo Power has been great in identifying what programmer's
RM> > Finally, we certainly could do TV add-ons to attract
RM> > new programmers that want such tools. However, our
RM> > resources are finite and we've been concentrating our
RM> > efforts on new tools for Turbo Pascal for Windows.
RM>Not event driven I hope <wink>.
The UI tools will be event driven because a) Windows itself is
event driven (unlike DOS) and b) they'll build on top of Borland's
Object Windows Library.
-Terry
* OLX 2.2 * TurboPower Software (voice 719-260-6641)
--- Maximus 2.01wb
* Origin: The Programmers Playhouse (1:128/60)
* Tossed by SFToss v1.00b on 92/04/22 09:28:35
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-21-92 00:00:02
From Terry Hughes
To Jim Starke
Subject Looking for
JS>I am looking for some TP 6.0 Code for uploading and
JS>I am hoping that someone knows where I can find the source code for:
JS>Xmodem
JS>Xmodem 1K
JS>Ymodem (Batch)
JS>Zmodem (Batch)
JS>Kermit
JS>Wazoo
JS>SeaLink
JS>I would prefer that the code be all public domain if at all
JS>possible, but if not, Sigh, I would pay the shareware fee
JS>for it.
If you can't find it all PD or aren't happy with what you find
you might want to know that our Async Professional product
has all but SeaLink. If interested, you can call us at the
number below or 800-333-4160 in the US and Canada.
-Terry
* OLX 2.2 * TurboPower Software (voice 719-260-6641)
--- Maximus 2.01wb
* Origin: The Programmers Playhouse (1:128/60)
* Tossed by SFToss v1.00b on 92/04/22 09:28:35
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-22-92 02:27:53
From Trevor Carlsen
To Dj Murdoch
Subject Re: FAT writing
SO> Okay, so how is the FAT stored? How is it accessable (just
SO> like a file -- using assign)? And, how do you change things
SO> in there without messing up everything?
DM> You expect an answer to this in echomail? Look it up in a reference
DM> book; most of them will get it right, whereas you'll get all sorts of
DM> misinformation if you ask here.
DM> For starters:
DM> The FAT is usually concentrated in the middle of the disk, though a
DM> small amount of FAT is to be found everywhere on the disk. Some
DM> particularly slow moving disks have a good deal of FAT concentrated in
DM> the read/write head.
????... The FATs are, to the best of my knowledge, contiguous and follow
directly after the boot record of the disk. The boot record is only one sector
long and is always sector 0. Therefore the FATs start at sector 1. The length
of the FAT, and the number of copies of the FAT, are specified in the boot
sector. Immediately following the FATs comes the root directory.
When you say that the FATs are usually concentrated in the middle of the disk,
are you referring to their physical location rather than their logical location?
I guess it would make sense to physically locate them at a central point
from an access timing point of view, its just that I have never seen that
concept mentioned before. The controlling of that would be transparent to
both the programmer and the machine as it should be incorporated into the
drive circuitry itself.
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/22 19:04:44
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-22-92 03:17:35
From Trevor Carlsen
To Keven R. Pittsinger
Subject Re: Reading C With Pascal
KP> The problem was the different way that C & Pascal handle
KP> strings inside the record. Wasn't quite sure how to write
KP> the string back to the record without Pascal putting in the
KP> length byte.
The simplest way to do a conversion is by creating a pointer to a C string
type and using that to assign the C string the value. All that needs to be
done before this is to assign the element at length(TPString)+1 the nul value,
eg.
type
CStr = array[1..255] of char;
CStrPtr = ^CStr;
function CString(var st: string): CStrPtr;
begin
if length(st) < 255 then
st[length(st) + 1] := #0;
CString := @st[1];
end;
then ... if the var cs is a CStr
cs := CString(TPStr)^;
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/22 19:04:44
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-22-92 03:21:21
From Trevor Carlsen
To Steffen Offermann
Subject TVision C->Pascal
SO> ... could at least someone post a complete syntax
SO> description of C++ and OOP-Pascal so that I might be able do
SO> write one on my own?
You have to be joking! The syntax description of both languages would be
fully described in both manuals. Take it from there.
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/22 19:04:44
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-22-92 03:58:31
From Trevor Carlsen
To Ross Alford
Subject Turbo 5.5 doesn't recognize Cyrix coproc
RA> Is this a known problem in Turbo 5.5? A program compiled
RA> with Turbo 5.5 that executes in about 2.9 seconds on a
RA> 486-25, and about 15 seconds on a 386SX-20 with coprocessor,
RA> takes about 50 seconds on a 386-33 with Cyrix coprocessor. I
RA> suspect it is using the emulation library instead of the
RA> co-pro. Does Turbo check for a coprocessor in some way other
RA> than checking the setup info? Does it fail to recognise the
RA> Cyrix as a coprocessor? Has anyone else seen anything like
RA> this? BTW, the same 386-33 tests out fine using other
RA> programs that require a 387, and I've run various tests that
RA> all report that it has a coprocessor which is healthy. On
RA> the other hand, I've tried other Turbo 5.5 programs that use
RA> the coprocessor, and none of them work right on that
RA> machine.
Do you have the source code for the TP5.5 programs? If so what are the relevant
compiler directives? It looks to me like they may have been compiled using
N+E+ and for some reason it does not recognise the Cyrix.
What happens if you use N+E- ? (Not much use to you I suppose if you are not
the author and don't have the source.) I believe that programs compiled with
this setting will not run on a machine without the co-processor.
The RTL checks for the presence of an 80x87 by instructing the processor to
store its control word in memory and then checks if that occurred. This is
indicated by the zero flag. If there is an 80x87 it then determines which
one it is. To quote the RTL source comments - "The 80387 defaults to affine
infinity, whereas the 8087 and 80287 default to projective". This is getting
a little out of my depth but may give you some clues.
I would really suggest that you contact the Borland support people.
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/22 19:04:44
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-22-92 04:59:20
From Trevor Carlsen
To Joy Mukherjee
Subject [1/2] - subject lines
JM> function Valu (S : String) : LongInt;
JM> var
JM> C : LongInt;
JM> T, E : Integer;
JM> I : Byte;
JM> Place : LongInt;
JM> begin
JM> Place := 1;
JM> C := 0;
JM> for I := 6 downto 1 do
JM> begin
JM> Val (S [I], T, E);
JM> If T <> 0 then
JM> begin
JM> C := C + T * Place;
JM> Place := Place * 10;
JM> end;
JM> end;
JM> Valu := C - 1;
JM> end;
Joy it fascinates me why you used this method instead of the far simpler -
function Valu(S: string): longint;
var temp: longint;
code: integer;
begin
val(S,temp,code);
if code = 0 then
Valu := temp - 1;
else
Valu := 0;
end;
Could it be because S might have trailing spaces? If so it would be better
to strip these first. If you have Eagle Software's strg unit (highly recommende
), just add the line ChrDelR(S,' ') before the val above.
Just as a matter of interest your function will not return the correct value
if there is a zero digit in the string. eg. if S = '1024' your function
will return 123 and not 1023 as intended.
The fix is simple:
for I := 6 downto 1 do
begin
Val (S [I], T, E);
If T <> 0 then
C := C + T * Place;
Place := Place * 10;
end;
Valu := C - 1;
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/22 19:04:45
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-22-92 06:43:15
From Trevor Carlsen
To Joy Mukherjee
Subject [1/2] - subject lines
TC> Just as a matter of interest your function will not return the correct
TC> value if there is a zero digit in the string. eg. if S = '1024' your
TC> function will return 123 and not 1023 as intended.
TC> The fix is simple:
TC> for I := 6 downto 1 do
TC> begin
TC> Val (S [I], T, E);
TC> If T <> 0 then
TC> C := C + T * Place;
TC> Place := Place * 10;
TC> end;
TC> Valu := C - 1;
Oh dear! :-( If the reason you were using this function was because of trailing
spaces then the fix above is faulty as trailing spaces will stuff it up. Try -
for I := 6 down to t do
begin
Val (S [I], T, E);
if E = 0 then begin
C := C + T * Place;
Place := Place * 10;
end;
end;
Now that will barf on imbedded spaces! In anything like this it is better
to get rid of unwanted chars first.
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/22 19:04:45
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-22-92 06:56:29
From Trevor Carlsen
To John Gohde
Subject Bbs Hacking
I did ask that this thread be dropped immediately. On the assumption that
you may not have seen that request yet, I'll say it just once more. Drop
this off-topic thread NOW.
Trevor Carlsen
Moderator.
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/22 19:04:45
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-22-92 06:59:48
From Trevor Carlsen
To Vince Laurent
Subject Reading Environment Variables
VL> I am trying to write a piece of code that can read environment
VL> variables that were SET in either the autoexec.bat or entered later.
Check out your Library reference pages 27 and 48.
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/22 19:04:45
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-21-92 18:13:24
From Dj Murdoch
To David G. Edwards
Subject Re: Pointers as function results (was: P
>I've found that this system works really well, and I can
>sleep at night,
>knowing that I never leave dangling pointers even though I'm doing lots
>of allocations and deallocations.
DG> Fascinating! How did you do this before Pascal had objects?!
Well, I didn't.
>As you can see, the memory allocation is a pretty minor part of it.
DG> Was the memory allocation done in "Matrix()"?
Yep.
>The
>dynamic indexing is really ugly (I'd like to use
DG> "y[k,j]", but I'm stuck
>using "y^.r^[k]^.c[j]"), but I haven't found any way around that.
DG> Why can't a future Pascal compiler translate "y[k,j]" to
DG> "y^.r^[k]^.c[j]" for you? I've never used Fortran on a
DG> PC, but don't PC Fortran compilers have to do this?
There are two problems here. First, Turbo Pascal can't handle dynamically
declared arrays. Thats the main reason y[k,j] can't work; it's something
that's been solved in standard Pascal in a couple of different ways, but TP
hasn't included those (and I don't know the details of them). The second
problem is the 64K barrier - that limits square matrices of doubles to about
90 x 90, which isn't big enough for me. I've got each row allocated separately,
with y^.r being a pointer to the array of pointers to the rows.
I'm really hoping that TP 7 (or BP 1, or whatever it's called) will address
both of these problems.
--- Msg V3.2
* Origin: Murdoch's Point: Waterloo, Ontario, Canada (1:221/177.40)
* Tossed by SFToss v1.00b on 92/04/23 08:19:03
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-21-92 18:35:56
From Dj Murdoch
To Stephane Michaud
Subject Re: Procedures...
SM> A PD implementation... Do you know any?
No.
--- Msg V3.2
* Origin: Murdoch's Point: Waterloo, Ontario, Canada (1:221/177.40)
* Tossed by SFToss v1.00b on 92/04/23 08:19:04
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-21-92 18:39:13
From Dj Murdoch
To Herb Brown
Subject Re: Cluster size (was sector)
HB> The function works well. The formula I used to get the result is:
HB> Number_of_clusters := trunc(file_size/cluster_size)+1
HB> Would_be_free := Number_of_clusters * cluster_size
HB> The var would_be_free is a tally of the file(s) actual
HB> size. The only problem with this algorythm is the
HB> possibitie that the file size would be equal to the
HB> cluster size. The +1 would throw that out the window. I
HB> suppose modula arithmetic would be well suited here.(?)
A formula that gives the right answer in all cases is:
Number_of_clusters := trunc( (file_size + cluster_size - 1)/cluster_size);
If file_size is an exact multiple of cluster_size, this gives the same answer
as trunc(file_size/cluster_size); if not, it adds the 1.
--- Msg V3.2
* Origin: Murdoch's Point: Waterloo, Ontario, Canada (1:221/177.40)
* Tossed by SFToss v1.00b on 92/04/23 08:19:04
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-21-92 18:43:09
From Dj Murdoch
To James Pryor
Subject Re: MOVEing files vs. copy/d
JP> Duplicate the source files' directory entry in the target
JP> directory, then delete the source entry. Yes, it will only
JP> work if the partition is the same.
JP> msdos Int 21h, function 56h
No need to go low-level - that's the function that the TP Rename() procedure
calls. For example, to move \olddir\filename to \newdir\filename, just do
the following:
var
f:file; begin
Assign(f,'\olddir\filename');
Rename(f,'\newdir\filename'); end.
--- Msg V3.2
* Origin: Murdoch's Point: Waterloo, Ontario, Canada (1:221/177.40)
* Tossed by SFToss v1.00b on 92/04/23 08:19:04
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-21-92 18:48:27
From Dj Murdoch
To Eddie Braiter
Subject Re: Borland Pascal
EB> A while ago there was a discussion about a possible
EB> "Borland Pascal". Upon contacting Borland's tech support
EB> over the Internet, I got this message:
EB> -------
EB> I have heard nothing about "Borland Pascal", our latest version of Pascal
EB> is 6.0 which is what you have.
EB> Thank you,
EB> Howard Kanter
EB> Borland Online Customer Service
EB> -------
Apparently Howard hasn't been reading Compuserve. The rumours about Borland
Pascal came out there, from a Borland rep.
--- Msg V3.2
* Origin: Murdoch's Point: Waterloo, Ontario, Canada (1:221/177.40)
* Tossed by SFToss v1.00b on 92/04/23 08:19:04
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-23-92 04:13:08
From Trevor Carlsen
To Dan Wulff
Subject Re: Fossil Routines
DW> Could you please explain how the nodelist for QBBS 2.75 is to be
DW> understod?
Dan, I'll get you to take this thread to netmail please.
Trevor Carlsen
Moderator.
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/23 19:29:36
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-23-92 06:12:07
From Trevor Carlsen
To Carl Letourneau
Subject Garbage
CL> I have TP 5.5, when I write to a file, it writes garbage. Is
CL> it normal or a bug in my compiler? If it is normal, I'd like to know
CL> how to tell TP not to write that garbage!
It would be normal if you are doing things incorrectly! Write a short demonstra
ion and post it here. That way we will have an idea of how to help.
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/23 19:29:36
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-23-92 06:14:06
From Trevor Carlsen
To Jud Mccranie
Subject Re: More features needed in TP
TC> But why waste global data segment space? It makes far more
TC> sense to use the heap.
JM> My point was to allow MORE than 64K global data. A global array is
JM> easier to use than the heap, which I consider a work-around.
Of course it is not a work-around! The heap has many advantages in regard
to memory conservation. Any program that requires more than 64K of global
data is IMHO badly designed in the first place. Actually the effective limit
for global data could be considered as 128K less whatever stack space is needed
for normal procedure and function calls if the programmer is smart. eg.
{$M 65520,0,655360}
var
{ 64K of globals };
procedure main;
var
{ Allowing for an 8K stack requirement you can have another
56K of "globals" here. }
begin
{ Place the whole program in here }
end;
begin
main;
end.
What IS needed is a way to have individual structures exceed 64K.
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/23 19:29:36
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-23-92 06:25:12
From Trevor Carlsen
To Jud Mccranie
Subject Re: TP 6 Bad design
JM> ... I don't think I'm using the heap.
Jud tell me you didn't mean that! P-l-e-a-s-e! :-)
You are either using the heap or you are not. As the programmer you KNOW
which it is! The way that reads, and previous messages of yours re global
variable space would tend to suggest, is that you don't know fully how to
use the heap. Surely I'm wrong.
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/23 19:29:36
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-23-92 07:02:50
From Trevor Carlsen
To Mark Ouellet
Subject Re: Qwk Format/reader 2/3
JM> PATH: ****/** 151/1003 13/13 12/12 240/99 1 30371/4
MO> TeeCee, if you read this I included the paths and seen-bys,
MO> maybe you can make some sens out of this.
Actually that message was one of 107 dupes accidently generated by a well
known, and well respected contributor to this echo (who shall remain nameless
as he has had the courtesy to profoundly apologise after being made aware
of the problem).
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/23 19:29:36
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-23-92 07:07:27
From Trevor Carlsen
To Mark Ouellet
Subject Re: testing records for equality
TC> ... This caveat can be dispensed with if when manipulating
TC> string fields, the field is fully nulled out first...
...
TC> Here is a better way to do your byte by byte comparison
TC> without the move procedure:
TC> function Equal(var Struct1, Struct2; size: word): boolean;
...
TC> Untested.
MO> I suspect it would not work either... Unless each
MO> structure was zeroed out before initialising any of its
MO> fields.
MO> Assuming a variant record of course, anything else
MO> is ok except maybe when fields of the structure, without
MO> being of variable size, can actually contain more or less
MO> data. Such as a String or any other field type which does
MO> not completely fill it's allocated space.
You are correct, but I did make the proviso "fully nulled out first". What
I did omit was that this also applied to variant records as well as string
fields. Thanks for pointing that out.
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/23 19:29:36
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-23-92 07:13:27
From Trevor Carlsen
To Travis Brunn
Subject Addresses and Pointers
TB> Does anyone know if there is a function to assign the address of a
TB> pointer to a longint or some other variable from inside Macintosh
TB> Turbo Pascal. I know it's a decrepid useless version with lot's of
TB> bugs, but it's the best I have to work with. I can allot space in
TB> memory to a pointer and give a pointer an address manually, but I have
TB> been unable to return the address of a pointer that has been allocated
TB> space.
I'm not familiar with TP for the Mac, however you could use a typecast if
the longint you speak of is suitable -
write(longint(PointerVar));
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/23 19:29:36
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-23-92 07:22:05
From Trevor Carlsen
To Herb Brown
Subject Cluster size (was sector)
TC> Number_of_clusters := (file_size +
TC> pred(cluster_size)) div cluster_size;
HB> OK, didn't think of that way. I'll be willing to bet if I looked at
HB> the code to xmodem, or something similar, it'll be the same as what
HB> you have. (parts where it calculates blocks).
I'm no sure how XModem does it but it is likely to be similar.
HB> ... And when are you firing up the BBQ again?
Soon...soon :-) With winter fast approaching - it was only 34C (93F) yesterday
- it is becoming cool enough to engage in pleasant outdoor activities again.
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/23 19:29:36
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-23-92 18:17:33
From Dj Murdoch
To Jud Mccranie
Subject Re: Powers
JM> Well, the alternatives are to overlaod the operators (which I think you
JM> were opposed to) or to do it with awkward functions/procs.
Procedures are awkward for operators, but functions are generally pretty readabl
. There are tricks to allow functions to return any record up to 255 bytes
(by making TP think that it's returning a string, instead), and the methods
I described a few days ago let you allocate and return pointers to larger
things.
--- Msg V3.2
* Origin: Murdoch's Point: Waterloo, Ontario, Canada (1:221/177.40)
* Tossed by SFToss v1.00b on 92/04/24 15:08:15
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-23-92 18:21:39
From Dj Murdoch
To John Giesbrecht
Subject Re: Procedure start-up code
JG> Ah, but I *do* indent my source. I guess I didn't explain
JG> myself very well. What I meant to say was: instead of
JG> LN.PAS#124: push ds
JG> 0000:0249 1E PUSH DS
JG> LN.PAS#125: xor cx, cx
JG> 0000:024A 31C9 XOR CX,CX
JG> how about
JG> LN.PAS#124: push ds
JG> 0000:0249 1E PUSH DS
JG> LN.PAS#125: xor cx, cx
JG> 0000:024A 31C9 XOR CX,CX
Fantastic suggestion! That's exactly what I did just last night. (Actually,
I eventually figured out what you meant, and I agree, it does look a lot better.
Here, just to whet your appetite, is some typical output from DUMPPROG version
2 (which is still unfinished):
DOIT:
TEST.PAS#1:var
TEST.PAS#2: x : word;
TEST.PAS#3:
TEST.PAS#4:procedure doit;
TEST.PAS#5:begin
0000:0000 55 PUSH BP
0000:0001 89E5 MOV BP,SP
0000:0003 31C0 XOR AX,AX
0000:0005 9A7C020400 CALL 0004h:027Ch
TEST.PAS#6: if x > 1 then
0000:000A 833E440001 CMP [WORD PTR X(+0044h)],+01h
0000:000F 7604 JBE SHORT TEST.PAS#8(0015h)
TEST.PAS#7: dec(x);
0000:0011 FF0E4400 DEC [WORD PTR X(+0044h)]
TEST.PAS#8:end;
0000:0015 5D POP BP
0000:0016 C3 RET
@:
TEST.PAS#9:
TEST.PAS#10:begin
0000:0017 9A00000400 CALL 0004h:0000h
0000:001C 55 PUSH BP
0000:001D 89E5 MOV BP,SP
0000:001F 31C0 XOR AX,AX
0000:0021 9A7C020400 CALL 0004h:027Ch
TEST.PAS#11: x := 10;
0000:0026 C70644000A00 MOV [WORD PTR X(+0044h)],000Ah
TEST.PAS#12: while x > 0 do
0000:002C 833E440000 CMP [WORD PTR X(+0044h)],+00h
0000:0031 7605 JBE SHORT TEST.PAS#14(0038h)
TEST.PAS#13: doit;
0000:0033 E8CAFF CALL DOIT(0000h)
0000:0036 EBF4 JMP SHORT TEST.PAS#12(002Ch)
TEST.PAS#14:end.
0000:0038 5D POP BP
0000:0039 31C0 XOR AX,AX
0000:003B 9AE9000400 CALL 0004h:00E9h
--- Msg V3.2
* Origin: Murdoch's Point: Waterloo, Ontario, Canada (1:221/177.40)
* Tossed by SFToss v1.00b on 92/04/24 15:08:16
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-23-92 18:31:26
From Dj Murdoch
To Bob Bannon
Subject Re: Help Needed With TP arrays
BB> The dynamically dimensioned array would only
BB> accept data if its indices were variables instead of
BB> constants. Here is what I mean: the last line of your sample code read:
BB>
BB> TheArray^[100] := whatever; {start using the array}
BB>
BB> I found that this did not work, but the following did:
BB>
BB> TheArray^[j] := whatever;
BB>
BB> where j could be a counter or whatever. The line of code
BB> you gave generated a "constant out of range" error.
The problem is with the declaration. Instead of
type
bigarray = array[0..0] of integer;
you should have
type
bigarray = array[0..65521 div sizeof(integer)-1];
and you won't even need to turn off range checking (though of course it won't
check for the true limit, just the declared limit.
--- Msg V3.2
* Origin: Murdoch's Point: Waterloo, Ontario, Canada (1:221/177.40)
* Tossed by SFToss v1.00b on 92/04/24 15:08:16
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-23-92 18:35:35
From Dj Murdoch
To Richard Morris
Subject Re: Object-oriented programming
RM> Picked up your TP enhancments to David Kirsch' VGA Mouse
RM> routines, Nice work,
Actually, I didn't enhance his code at all. I just did a near literal translati
n from C to TP.
RM> It works well under all screen modes (Mods I have made to
RM> allow TV to do 80x30 mode make the 9th bit of characters
RM> unnecessary), The only problem is that the TV Views only
RM> shuffle their drawing around a 1 character mouse cursor.
RM> Makes for mouse droppings, and messy view drawing.I can't
RM> think of any easy way to get around this.
Do you have the TV source? Could you turn off the mouse when it's in danger
of being overwritten? This would be a change to TView.DrawView, I think.
--- Msg V3.2
* Origin: Murdoch's Point: Waterloo, Ontario, Canada (1:221/177.40)
* Tossed by SFToss v1.00b on 92/04/24 15:08:16
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-23-92 18:44:04
From Dj Murdoch
To Norbert Igl
Subject Re: MOVEing files vs. copy/delete
NI> function RealName(FakeName:String):String;
NI> Var Temp:String;
NI> begin
NI> FakeName := FakeName + #0; { ASCIIZ }
NI> With Regs do
NI> begin
NI> AH := $60;
NI> DS := Seg(FakeName); SI := Ofs(FakeName[1]);
NI> ES := Seg(Temp); DI := OfS(Temp[1]);
NI> INTR($21,Regs);
NI> DOSERROR := AX * ((Flags And FCarry) shr 7);
NI> Temp[0] := #255;
NI> Temp[0] := CHAR(POS(#0,Temp)-1);
NI> end;
NI> If DosError <> 0 then Temp := '';
NI> RealName := Temp;
NI> end;
NI> begin
NI> OldName := RealName( OldName ); { resolve
NI> subst, join, redir...}
This is sort of dangerous. To quote from Ralf Brown's interrupt list, talking
about INT 21 AH=60:
if path string is on a JOINed drive, the returned name is the one that would
be needed if the drive were not JOINed; similarly for a SUBSTed, ASSIGNed,
or network drive letter. Because of this, it is possible to get a qualified
name that is not legal under the current combination of SUBSTs, ASSIGNs, JOINs,
and network redirections.
If that happens to you, your code below will fail, because you'll have
lost the legal alias, and will be working with the illegal true name.
--- Msg V3.2
* Origin: Murdoch's Point: Waterloo, Ontario, Canada (1:221/177.40)
* Tossed by SFToss v1.00b on 92/04/24 15:08:16
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-23-92 18:49:05
From Dj Murdoch
To Pierre Denommee
Subject Re: Turbo Pascal Units
PD> This is impossible, TPU include portion of the RTL
PD> and the RTL changes from version to version. A .TPU
PD> without a source is a useless thing when the next version arrives.
It's not that it includes the RTL (units don't include any part of other units
that they use), but just that it contains all sorts of references to particular
offsets into the old RTL. If you could figure out the correspondence between
offsets in the old and new (if there was one...) then you could do a conversion.
I don't know of anyone who has bothered, with the possible exception of the
rumoured commercial conversion utility.
--- Msg V3.2
* Origin: Murdoch's Point: Waterloo, Ontario, Canada (1:221/177.40)
* Tossed by SFToss v1.00b on 92/04/24 15:08:16
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-23-92 18:51:49
From Dj Murdoch
To Trevor Carlsen
Subject Re: FAT writing
DM> The FAT is usually concentrated in the middle of the disk, though a
DM> small amount of FAT is to be found everywhere on the disk. Some
DM> particularly slow moving disks have a good deal of
DM> FAT concentrated in
DM> the read/write head.
TC> ????... The FATs are, to the best of my knowledge,
TC> contiguous and follow directly after the boot record of
TC> the disk.
Sorry, TC. I forgot the :-). It was late at night, and my sense of humour
isn't that great at the best of times.
--- Msg V3.2
* Origin: Murdoch's Point: Waterloo, Ontario, Canada (1:221/177.40)
* Tossed by SFToss v1.00b on 92/04/24 15:08:16
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-23-92 20:30:55
From Dj Murdoch
To Greg Williams
Subject Re: Question, Compression
EG> I heard about someone working on an INTENSIVE form of
EG> compression, It would take almost a MEG and make it 1
EG> byte, does ANY one know about this radical compression
EG> theory?
GW> Hehehe... sounds like "lossey" compression to me!
Here's my new, super-duper lossless compression method that can compress huge
files incredibly: for example, the file TURBO.EXE (325982 bytes) and the file
TURBO.HLP (669951 bytes) can each be compressed into a single *bit*!!!!!!
(DOS doesn't handle 1 bit files well, so I write out the bit as a whole byte.
In fact, DOS will waste a whole cluster storing the compressed version, but
that's not my fault.)
Program Compress;
begin
if paramstr(1) = 'TURBO.EXE' then
write('0')
else
write('1');
end.
Unfortunately, the uncompress program is rather complicated; the best I've
been able to do so far is a 1 megabyte uncompressor, which looks something
like this:
Program UnCompress;
var
bit : char;
begin
read(bit);
if bit = '0' then
write_out_a_copy_of_turbo_exe
else
write_out_a_copy_of_turbo_hlp;
end.
I've left out the write_out_... routines, because they're rather dull. One
limitation of this compressor: it's only lossless on TURBO.EXE and TURBO.HLP;
other files are lost completely.
:-) :-) :-) <======= For TeeCee :-)
--- Msg V3.2
* Origin: Murdoch's Point: Waterloo, Ontario, Canada (1:221/177.40)
* Tossed by SFToss v1.00b on 92/04/24 15:08:16
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-25-92 12:44:32
From Trevor Carlsen
To Dj Murdoch
Subject Re: Question, Compression
DM> I've left out the write_out_... routines, because they're rather dull.
DM> One limitation of this compressor: it's only lossless on TURBO.EXE
DM> and TURBO.HLP; other files are lost completely.
DM> :-) :-) :-) <======= For TeeCee :-)
{$REDFACE+}
I cannot believe that I did not twig to your humour :-( Well done.
BTW the 1meg:1 compression message - the first thing I did was to check if
it was written on 1st April. When I saw that it was not, I thought to post
a message that the writer must have heard this rumour on that date. Then
I though better say nothing and just sit back and see how many would be sucked
in. - The mind boggles...
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732569) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/25 21:30:49
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-25-92 12:49:25
From Trevor Carlsen
To Brian Stark
Subject Help Needed with TP arrays
TC> {$R-}
TC> dynamic[1000] := 1000;
TC> etc...
BS> I typed in your original code, and added the necessary info for the
BS> size of the array, but when compiling under Tp v5.5, the IDE kept on
BS> reporting a constant out of range error -- this happened with the
BS> {$R-}. Any ideas as to what may be going on?? Did you test your code,
BS> or is just an idea of how to go about creating dynamic arrays??
I overlooked (but knew) mentioning that the compiler always catches out-of-range
literals, regardless of R+ or R-. My apologies.
Actually by declaring the array as large as is possible this cannot happen.
However my view on that method is that it *might* allow a programmer to become
complacent about writing range checking routines. By forcing him to turn off
automatic range checking, I hope to increase the awareness of the need for
code to do it. Either way the method can be deadly if no RC code is written
and there is any possibility of out-of-range values.
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732569) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/25 21:30:49
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-25-92 12:59:23
From Trevor Carlsen
To J J Marquez
Subject Re: Turbo 5.5 doesn't recognize Cyrix co
JJ> TeeCee - try this and see if it works at your place. I can't get it
JJ> to det be referring to a type of user interface. I've posted this question
several times, but apparently our mail hasn't been getting out for the past
month or so, so I never got any replies. Can anybody tell me what the initials
stand for?
<Judy>
--- EZPoint V2.0
* Origin: North Canton, OH (1:157/531.2)
SEEN-BY: 1/211 11/1 2 110/35 115/689 154/40 77 100 157/2 3 100 507 531
SEEN-BY: 157/533 535 538 548 550 602 603 608 609 613 228/19 231/250 233/15
SEEN-BY: 239/900 396/1 WriteLn (' UNDEFINED Return Value of : ', Test8087:
);
JJ> end { of case stmt }
JJ> END.
There is nothing wrong with the program but you are making an incorrect assumpti
n. Test8087 - from the system unit - has a default value of zero. If code
from the 80x87 library routines is not needed it is not linked in by the smart
linker and so the test to change its value never takes place. If you were
to include code that *required* something from the RTL library for the 8087,
the variable then gets its correct value. On my '486 it reports that a 80387
was detected.
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732569) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/25 21:30:49
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-25-92 13:07:03
From Trevor Carlsen
To All
Subject Messages addressed to me.
Yesterday my main mail machine gurgled loudly and died comprehensively after
picking up and distributing the mail - but before I got to read it. My youngest
backup was 3 days old, so if anyone has messaged me - particularly by netmail
- and get no reply, try again!
As luck would have it, I had sold the damn thing and my new machine was also
arriving yesterday. Oh well... :-(
(and I though my 386 was fast... )
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732569) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/25 21:30:49
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-25-92 15:55:04
From Trevor Carlsen
To David G. Edwards
Subject Help Needed with TP arrays
> I also prefer it because it *forces* the programmer
> to cancel automatic range checking and so, hopefully
> :-), forces programmer range checking.
DG> Why force the programmer to do something the machine can do much
DG> better?
You'll probably see my other reply on this - I don't *want* the machine to
do it as there is no way, in this particular situation, where that is reliable.
Therefore I want the user to be made very aware that it is HIS/HER responsibili
y.
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732569) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/25 21:30:49
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-25-92 16:00:26
From Trevor Carlsen
To Chris Kelling
Subject Re: Help Needed with TP arrays
CK> Why use pseudo dynamic arrays. You can actually allocate dynamic
CK> arrays.
Sorry... but TP does not have true dynamic array sizing. It can be done but
it is a little bit of a kludge - hence the term "pseudo". As you obviously
disagree, why not prove your point of view? :-)
TeeCee
--- TC-ED v2.01
* Origin: The Pilbara's Pascal Centre (+61 91 732569) (3:690/644)
* Tossed by SFToss v1.00b on 92/04/25 21:30:49
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-23-92 22:55:38
From Dj Murdoch
To Lou Garner
Subject Re: Sorting records
LG> Can anyone give me some pointers (ha! pun!) in sorting
LG> records on a string field?
LG>
LG> I have a typed file of records 459 bytes long each. The
LG> first two fields are first and last name. There are 1400
LG> records in the file.
LG>
LG> The size of the file means I can't sort in memory (at
LG> least, not until OS/2 Turbo Pascal gets here!). I could
LG> set up an array of pointers, split the file in half and
LG> sort each half in memory (shell sort, I suppose) and then
LG> merge sort on disk. Would that be the best bet?
I think your best bet is probably to do an external sort. I use QSORT (a
shareware sort utility) for big sorts like this; it's just so much trouble
to handle the splits and merges.
You can file request an old version (QSORT403.ZIP) from my bossnode, 1:221/177,
but I don't know where you'll get a current one. If you can't find it on a
BBS, get it direct from SEA. To quote the .doc file:
Please address all correspondence or bug reports relating to this product to:
System Enhancement Associates, Inc.
21 New Street
Wayne, NJ 07470
Phone: (201) 473-5153
--- Msg V3.2
* Origin: Murdoch's Point: Waterloo, Ontario, Canada (1:221/177.40)
* Tossed by SFToss v1.00b on 92/04/25 21:30:54
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-24-92 08:34:39
From Dj Murdoch
To Some Sysop
Subject Re: MOVEing files vs. co cop
DM> var
DM> f:file; begin
DM> Assign(f,'\olddir\filename');
DM> Rename(f,'\newdir\filename'); end.
S> This won't work in several cases. If you are trying that across drives,
S> say c: to d: you get ioresult 17 and if the file you are trying to
S> rename to already exists you get ioresult 5. But ioresult 5 could mean
S> several things. I have found it best to first:
Those are good suggestions. I should have said that the code above is incomplet
; it doesn't consider exceptions, let alone handle them.
P.S. You should adjust your message editor so that it doesn't post echomail
from "Sysop". If I don't change the destination line, thousands of sysops
around the world will be notified that they've got a message waiting.
--- Msg V3.2
* Origin: Murdoch's Point: Waterloo, Ontario, Canada (1:221/177.40)
* Tossed by SFToss v1.00b on 92/04/25 21:30:54
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Conference 4
Date 04-24-92 08:41:51
From Dj Murdoch
To Matt Heck
Subject Re: FreePtr
MH> Can anyone tell me what the TP6.0 equivilant to the TP5.0 FreePtr is?
There isn't one. The heap manager is different; any routine that used FreePtr
in any non-trivial way is going to have to be rewritten.
--- Msg V3.2
* Origin: Murdoch's Point: Waterloo, Ontario, Canada (1:221/177.40)
* Tossed by SFToss v1.00b on 92/04/25 21:30:54